package secondStage.part4.字符流;

import java.io.*;

/**
 * @ClassName: [CopyJavaDemo]
 * @Description: 复制Java文件改进版(更名)
 * @Author: [黄劲松]
 * @CreateDate: [2021-04-04]
 * @Version: [v1.0]
 */
/*
需求:
    把目录下的D:\IdeaProjects\JavaBaseStudy\src\secondStage\part4\字节流\BufferedOutputStreamDemo.java复制到 F:\JavaBaseStudy\CopyJava.java

分析:
    ①转换流的名字比较长，而我们常见的操作都是按照本地默认编码实现的，所以，为了简化书写，转换流提供了对应的子类
    ②FileReader: 用于读取字符文件的便捷类
        FileReader(String fileName)
    ③FileWriter: 于写入字符文件的便捷类
        FileWriter(String fileName)
    ④数据源和目的地的分析
数据源: myCharStream\\ConversionStreamDemo.java ---读数据--- Reader --- InputStreamReader ---- FileReader
目的地: myCharStream\l Copy.java---写数据--- Writer --- OutputStreamWriter --- FileWriter
思路:
    1:根据数据源创建字符输入流对象
    2:根据目的地创建字符输出流对象
    3:读写数据，复制文件
    4:释放资源
 */
public class CopyJavaDemo1 {
    public static void main(String[] args) throws IOException {
        //创建字符输入流对象
        FileReader fr = new FileReader("D:\\IdeaProjects\\JavaBaseStudy\\src\\secondStage\\part4\\字节流\\BufferedOutputStreamDemo.java");
        //创建字符输出流对象
        FileWriter fw = new FileWriter("F:\\JavaBaseStudy\\CopyJavaDemo.java");
        //读写数据，复制文件
        //一次读写一个字符数据
/*        int ch;
        while ((ch=fr.read())!=-1){
            fw.write(ch);
        }*/
        //一次读写一个字符数组数据
        char[] chs = new char[1024];
        int len;
        while ((len=fr.read(chs))!=-1){
            fw.write(chs,0,len);
        }
        //释放资源
        fr.close();
        fw.close();

    }
}
